package leetcode.code0937;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

//SolutionTest
public class Solution {

	public String[] reorderLogFiles(String[] logs) {
		int len = logs.length;
		List<String> logs4num = new ArrayList<>();
		List<String[]> logs4char = new ArrayList<>();
		char flag = 1;
		for (int i = 0; i < len; i++) {
			String log = logs[i];
			int blank = log.indexOf(' ');
			String idx = log.substring(0, blank);
			String content = log.substring(blank + 1);
			if ((flag = content.charAt(0)) >= '0' && flag <= '9') {
				// 数字日志 应该保留原来的相对顺序。
				logs4num.add(log);
			} else {
				logs4char.add(new String[] { content, idx });
			}
		}
		Collections.sort(logs4char, (a, b) -> {
			if (a[0].equals(b[0])) {
				// 在内容相同时，按标识符排序。
				return a[1].compareTo(b[1]);
			}
			// 在内容不同时，忽略标识符后，按内容字母顺序排序；
			return a[0].compareTo(b[0]);
		});
		String[] ans = new String[len];
		// 所有 字母日志 都排在 数字日志 之前。
		int p = 0;
		for (int i = 0; i < logs4char.size(); i++) {
			String[] cur = logs4char.get(i);
			ans[p++] = cur[1] + ' ' + cur[0];
		}
		for (int i = 0; i < logs4num.size(); i++) {
			ans[p++] = logs4num.get(i);
		}
		return ans;
	}

}
